### 8、6将函数存储在模块中
# 使用函数的优点之一是可以将代码块与主程序分离。通过给函数指定描述性名称
# 能让程序容易理解的多。
# 你还可以进一步，将函数存储在称为模块的独立文件中，再将模块导入（import）主程序
# import语句可以让你在当前运行的程序文件中使用模块中的代码

# 通过将函数存储在独立的文件中，可隐藏程序代码的细节，将重点放在程序的高层逻辑上
# 这还能让你在众多不同的程序中复用函数。
# 将函数存储在独立文件后，可与其他程序员共享这些文件而不是整个程序
# 知道如何导入函数还能让你使用其他程序员编写的函数库

# 导入模块的方法又好几种

# 8.6.1 导入整个模块

# 要让函数时刻导入的，得先创建模块
# 模块是扩展名为 .py 的文件，包含要导入程序的代码
# 创建一个包含 make_pizza() 函数的模块————pizza.py

# 调用 make_pizza 模块
import make_pizza

make_pizza.make_pizza(16, 'pepperoni')
make_pizza.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')

# 当Python读取这个文件时，代码行 import make_pizza 会让 Python打开文件 make_pizza
# 并将其中的所有函数都复制到这个程序中。你看不到复制代码的过程，因为Python会在程序即将运行时在幕后复制这些代码
# 你只要知道，用了 import 之后，文件中的所有函数，都可以使用了

# 要调用被导入模块中的函数，可指定被导入模块的名称和函数名，中间用 . 隔开

# 8.6.2 导入特定的函数
# 还可以只导入模块中的特定函数，语法如下：
# from module_name import function_name

# 用逗号分割函数名，可根据需要从模块中导入任意数量的函数：
# from module_name import function_0, function_1, function_2

# 8.6.3 使用 as 给函数指定别名

# 如果要导入的函数的名称太长或者可能与程序中既有的名称冲突，可指定简短而独一无二的别名（alias）：函数的另一个名称，类似与外号

# 给make_pizza() 函数指定别名 mp()

from make_pizza import make_pizza as mp

mp(16, 'pepperoni')

# 8.6.4 使用 as 给模块指定别名
# 还可以给模块指定别名
import make_pizza as p

p.make_pizza(16, 'pepperoni')

# 8.6.5 导入模块中的所有函数
# 使用 * 运算符
from make_pizza import *

make_pizza(16, 'pepperoni')
# 导入了模块中的所有函数。则在主程序中，无须使用 点号 . 就可以调用函数
# 而导入整个模块则需要使用 点号.
# 然而，在使用并非自己编写的大型模块时，最好不要使用这种导入方法
# 因为很可能重名，导致报错

### 8、7 函数编写指南
# 在编写函数时，需要牢记几个细节。
# 应给函数指定描述性名称，且只使用小写字母和下划线
# 每个函数都应包含简要阐述其功能的注释。盖住是应紧跟在函数定义后面，并采用文档字符串的格式

# 在给形参指定默认值的时候，等号两别不要有空格
# def function_name(parameter_0, parameter_1='default value')
# 函数调用中的关键字实参也应遵循这种约定


















































































